package com.rzjm.api.service;

import com.rzjm.api.entity.Charger;
import com.rzjm.api.entity.ChargerOrder;
import com.rzjm.api.entity.ChargerPortRecord;

import java.util.List;

/**
 * 【请填写功能名称】Service接口
 *
 * @author ruoyi
 * @date 2022-05-07
 */
public interface ChargerPortRecordService extends BaseService<ChargerPortRecord> {
    /**
     * 添加记录
     * @param charger  设备对象
     * @param portIndex  设备端口号
     * @param dataArray  拆解的数据绑定的数组
     * @param data  所有的数据
     * @param orderNum   当前命令代码
     * @return
     */
    int addRecord(Charger charger, int portIndex, String[] dataArray, String data, String orderNum);


    /**
     * 添加记录
     * @param charger  设备对象
     * @param portIndex  设备端口号
     * @param dataArray  拆解的数据绑定的数组
     * @param data  所有的数据
     * @param orderNum   当前命令代码
     * @return
     */
    int addRecordByFree(Charger charger, int portIndex, String[] dataArray, String data, String orderNum);


    /**
     *  查看订单
     * @param charger  设备对象
     * @param portIndex  设备端口号
     * @param dataArray  拆解的数据绑定的数组
     * @param data  所有的数据
     * @param orderNum   当前命令代码
     * @return
     */
    int validateChargerOrder(Charger charger, int portIndex, String[] dataArray, String data, String orderNum);


    /**
     * 获取当前订单的所有的记录
     * @param chargerOrder
     * @return
     */
    List<ChargerPortRecord> getAllRecordByOrderNo(ChargerOrder chargerOrder);


    /**
     *  获取当前订单的所有记录，用来计算最终的使用价格
     * @param chargerOrder
     * @return
     */
    List<ChargerPortRecord> getAllRecordByOrderNoGroupByPowerRole(ChargerOrder chargerOrder);

    /**
     * 获取当前订单所有的
     * @param chargerOrder
     * @param lastLimit   最后多少条数据  0 - 所有  大于0 指最后多少条
     * @return
     */
    List<Double> getAllRecordPowers(ChargerOrder chargerOrder, int lastLimit);


    /**
     *  开始充电 接收参数后操作
     * @param charger
     * @param dataArray
     * @param data
     * @return
     */
    int startCharger(Charger charger, String[] dataArray, String data);


    /**
     *  心跳命令结束当前充电任务
     * @param charger
     * @param dataArray
     * @param data
     * @return
     */
    int overTask(Charger charger, String[] dataArray, String data);


    /**
     *  设备离线 订单直接结束当前充电任务
     * @param chargerOrder
     * @return
     */
    int overTaskByOrderNo(ChargerOrder chargerOrder);

    /**
     *  获取当前订单的充电量
     * @param chargerOrder
     * @return
     */
    double getChargerCapacity(ChargerOrder chargerOrder);
}
